var arr = [5, 3, 6, 8, 1, 4, 7]


/**
 * 函数和方法有所区别
 * 1.函数是指独立的function
 * 2.方法
 * 
  var obj = {
    methods: function() {}
  }
 */


  // 高阶函数
// 数组的方法
// filter:过滤用法,参数为：(item, index, arr)表示(数组内部对象值，数组下表，数组引用)
// arr.filter((item, index, arr) => Boolean) 返回值为布尔值
// var numArr = arr.filter(function(item) {
//   // 返回false，不会放在numArr里面
//   // return false
//   return item % 2 === 0
// })
// console.log(numArr)

// map:映射
// var numArr2 = arr.map(function(item) {
//   // 内容不变
//   // return 
//   // 10倍
//   return item * 10
// })
// console.log(numArr2)

// forEach: 迭代
// arr.forEach(function(item) {
//   console.log(item)
// })

// find/findIndex  分别查找对象、对象的索引值
// es6-12
// var obj = [
//   {name: 'a', age: 1},
//   {name: 'b', age: 13},
//   {name: 'c', age: 16},
//   {name: 'd', age: 12},
// ]
// var result = obj.find(function(item) {
//   // 返回为true的item内容
//   // return true
//   return item.name == 'c'
// })
// console.log(result)
// var resultIndex = obj.findIndex(function(item) {
//   // 返回为true的item内容
//   // return true
//   return item.name == 'c'
// })
// console.log(resultIndex)


// reduce：累加
// arr.reduce 参数：函数(上一个值, item数组内容),初始化值
var total = arr.reduce(function(prevalue, item) {
  return prevalue + item
}, 0)
console.log(total)



